animalcules 0.99.0
knitr::opts_chunk$set(message = FALSE)
library(magrittr)
library(tibble)
library(MultiAssayExperiment)
library(SummarizedExperiment)
library(S4Vectors)
library(usethis)
library(dplyr)
library(plotly)
library(tsne)
library(reshape2)
library(caret)
library(vegan)
library(ape)
library(DESeq2)
library(ggplot2)
library(forcats)
library(grid)
library(lattice)
library(plotROC)
library(animalcules)
This toy dataset contains 50 simulated samples. Throughout the vignette, we will use the data structure MultiAssayExperiment (MAE) as the input to all functions.
data_dir = system.file("extdata/MAE.rds", package = "animalcules")
MAE = readRDS(data_dir)
To run the shiny app, just call: run_animalcules(). The rest of the vignette is for the command line version of animalcules.
# run_animalcules()
One of the first steps in the data analysis process involves summarizing the data and looking for outliers or other obvious data issues that may cause issue with downstream analysis.
One type of summarization plot returns either a box plot or pie chart for continous or categorical data respectively.
p <- filter_summary_top(MAE,
samples_discard = c("subject_2", "subject_4"),
filter_type = "By Metadata",
sample_condition = "AGE")
p
One type of summarization plot returns either a density plot or bar plot for continous or categorical data respectively.
p <- filter_summary_bottom(MAE,
samples_discard = c("subject_2", "subject_4"),
filter_type = "By Metadata",
sample_condition = "SEX")
p
It is often necessary to bin continuous data into categories when performing analyses that require categorical input. To help ease this process, users can automatically categorize categorical data and provide custom bin breaks and labels in doing so.
microbe <- MAE[['MicrobeGenetics']]
samples <- as.data.frame(colData(microbe))
result <- filter_categorize(samples,
sample_condition = "AGE",
new_label="AGE_GROUP",
bin_breaks=c(0,55,75,100),
bin_labels=c('Young','Adult',"Elderly"))
result$sam_table
## AGE SEX DISEASE GROUP AGE_GROUP
## subject_1 34 Female positive A Young
## subject_2 61 Male positive A Adult
## subject_3 62 Male positive A Adult
## subject_4 95 Female positive B Elderly
## subject_5 30 Female positive A Young
## subject_6 80 Female positive B Elderly
## subject_7 59 Male positive B Adult
## subject_8 60 Male positive C Adult
## subject_9 55 Male positive B Young
## subject_10 60 Male positive B Adult
## subject_11 71 Female negative C Adult
## subject_12 91 Male positive A Elderly
## subject_13 8 Female positive B Young
## subject_14 60 Male negative A Adult
## subject_15 1 Female negative B Young
## subject_16 40 Female positive A Young
## subject_17 48 Male negative B Young
## subject_18 21 Male negative A Young
## subject_19 66 Male positive B Adult
## subject_20 20 Female negative B Young
## subject_21 6 Female negative A Young
## subject_22 19 Male negative A Young
## subject_23 75 Male negative C Adult
## subject_24 99 Male negative C Elderly
## subject_25 30 Female negative C Young
## subject_26 77 Female negative B Elderly
## subject_27 36 Female negative B Young
## subject_28 63 Female negative A Adult
## subject_29 91 Male negative A Elderly
## subject_30 62 Female positive B Adult
## subject_31 24 Female positive B Young
## subject_32 84 Male positive B Elderly
## subject_33 77 Male positive B Elderly
## subject_34 13 Female positive A Young
## subject_35 60 Male negative A Adult
## subject_36 66 Male positive B Adult
## subject_37 89 Male negative C Elderly
## subject_38 98 Male positive A Elderly
## subject_39 37 Male positive A Young
## subject_40 48 Male positive A Young
## subject_41 35 Male positive B Young
## subject_42 23 Male positive C Young
## subject_43 56 Male negative B Adult
## subject_44 78 Male negative A Elderly
## subject_45 29 Female positive C Young
## subject_46 53 Male negative A Young
## subject_47 78 Male positive B Elderly
## subject_48 35 Female positive A Young
## subject_49 92 Female negative C Elderly
## subject_50 36 Female negative C Young
result$plot.unbinned
result$plot.binned
A typical analysis involves visualization of microbe abundances across samples or groups of samples. Animalcules implements three common types of visualization plots including stacked bar plots, heat map, and box plots generated with Plotly.
The stacked bar plots are used to visualize the relative abundance of microbes at a given taxonomical level in each sample represented as a single bar.
p <- relabu_barplot(MAE,
tax_level="family",
order_organisms=c('Retroviridae'),
sort_by="organisms",
sample_conditions=c('SEX', 'AGE'),
show_legend=TRUE)
p
The heatmap represents a sample by organisms matrix that can be visualized at different taxonomic levels.
p <- relabu_heatmap(MAE,
tax_level="genus",
sort_by="conditions",
sample_conditions=c("SEX", "AGE"))
p
The boxplot visualization allows users to compare the abundance of one or more organisms between categorical attributes.
p <- relabu_boxplot(MAE,
tax_level="genus",
organisms=c("Escherichia", "Actinomyces"),
condition="SEX",
datatype="logcpm")
p
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
## Warning: 'layout' objects don't have these attributes: 'boxmode'
## Valid attributes include:
## 'font', 'title', 'titlefont', 'autosize', 'width', 'height', 'margin', 'paper_bgcolor', 'plot_bgcolor', 'separators', 'hidesources', 'showlegend', 'colorway', 'datarevision', 'template', 'dragmode', 'hovermode', 'hoverdistance', 'spikedistance', 'hoverlabel', 'selectdirection', 'grid', 'calendar', 'xaxis', 'yaxis', 'ternary', 'scene', 'geo', 'mapbox', 'polar', 'radialaxis', 'angularaxis', 'direction', 'orientation', 'editType', 'legend', 'annotations', 'shapes', 'images', 'updatemenus', 'sliders', 'barmode', 'bargap', 'mapType'
Alpha diversity, which describes the richness and evenness of sample microbial community, is a vital indicator in the microbiome analysis. animalcules provides the interactive boxplot comparison of alpha diversity between selected groups of samples. Both taxonomy levels and alpha diversity metrics (Shannon, Gini Simpson, Inverse Simpson) can be changed. Users can also conduct alpha diversity statistical tests including Wilcoxon rank sum test, T test and Kruskal-Wallis test.
Plot the alpha diversity boxplot between the levels in selected condition.
alpha_div_boxplot(MAE = MAE,
tax_level = "genus",
condition = "DISEASE",
alpha_metric = "shannon")
Conduct statistical test on the alpha diversity between the levels in selected condition.
do_alpha_div_test(MAE = MAE,
tax_level = "genus",
condition = "DISEASE",
alpha_metric = "shannon",
alpha_stat = "T-test")
## Wilcoxon rank sum test Welch Two Sample t-test
## P-value 0.3667155 0.4879632
On the other hand, by defining distances between each sample, beta diversity is another key metric to look at. Users can plot the beta diversity heatmap by selecting different beta diversity dissimilarity metrics including Bray-Curtis and Jaccard. Users can also conduct beta diversity statistical testing between groups including PERMANOVA, Wilcoxon rank sum test and Kruskal-Wallis.
Plot the beta diversity heatmap with selected condition.
diversity_beta_heatmap(MAE = MAE,
tax_level = 'genus',
input_beta_method = "bray",
input_bdhm_select_conditions = 'DISEASE',
input_bdhm_sort_by = 'condition')
Plot the beta diversity boxplot within and between conditions.
diversity_beta_boxplot(MAE = MAE,
tax_level = 'genus',
input_beta_method = "bray",
input_select_beta_condition = 'DISEASE')
Conduct statistical test on the beta diversity between the levels in selected condition.
diversity_beta_test(MAE = MAE,
tax_level = 'genus',
input_beta_method = "bray",
input_select_beta_condition = 'DISEASE',
input_select_beta_stat_method = 'PERMANOVA',
input_num_permutation_permanova = 999)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## vegan::adonis2(formula = dist.mat ~ condition, data = sam_table, permutations = input_num_permutation_permanova, strata = "PLOT")
## Df SumOfSqs R2 F Pr(>F)
## condition 1 0.2066 0.01495 0.7283 0.683
## Residual 48 13.6149 0.98505
## Total 49 13.8215 1.00000
A wrapper for conduction 2D and 3D Principal Component Analysis.
result <- dimred_pca(MAE,
tax_level="genus",
color="AGE",
shape="DISEASE",
pcx=1,
pcy=2,
datatype="logcpm")
#result$plot
result$table
## PC Standard Deviation Variance Explained Cumulative Variance
## PC1 PC1 2.5599634292793 10.4% 10.4%
## PC2 PC2 2.19272108550489 7.6% 18.0%
## PC3 PC3 2.00513673550525 6.4% 24.4%
## PC4 PC4 1.87545892419787 5.6% 30.0%
## PC5 PC5 1.80253703972772 5.2% 35.2%
## PC6 PC6 1.70630724920304 4.6% 39.8%
## PC7 PC7 1.66547786633967 4.4% 44.2%
## PC8 PC8 1.60985175294652 4.1% 48.3%
## PC9 PC9 1.58856744410038 4.0% 52.3%
## PC10 PC10 1.51660140077173 3.7% 56.0%
## PC11 PC11 1.46691750563179 3.4% 59.4%
## PC12 PC12 1.41860673606557 3.2% 62.6%
## PC13 PC13 1.37351370785232 3.0% 65.6%
## PC14 PC14 1.32307433543595 2.8% 68.3%
## PC15 PC15 1.27467817971347 2.6% 70.9%
## PC16 PC16 1.24384812204377 2.5% 73.4%
## PC17 PC17 1.19079223811853 2.3% 75.6%
## PC18 PC18 1.14859721371312 2.1% 77.7%
## PC19 PC19 1.12823255378002 2.0% 79.7%
## PC20 PC20 1.08105271170379 1.9% 81.6%
## PC21 PC21 1.04943830778721 1.7% 83.3%
## PC22 PC22 1.03556977559738 1.7% 85.0%
## PC23 PC23 0.971155099453354 1.5% 86.5%
## PC24 PC24 0.96854414152651 1.5% 88.0%
## PC25 PC25 0.891803703027547 1.3% 89.3%
## PC26 PC26 0.850357189158019 1.1% 90.4%
## PC27 PC27 0.839645565137874 1.1% 91.6%
## PC28 PC28 0.795399142787225 1.0% 92.6%
## PC29 PC29 0.73880941658758 0.9% 93.4%
## PC30 PC30 0.70746347120883 0.8% 94.2%
## PC31 PC31 0.704683482690471 0.8% 95.0%
## PC32 PC32 0.65805224041009 0.7% 95.7%
## PC33 PC33 0.618283026194574 0.6% 96.3%
## PC34 PC34 0.584610814368372 0.5% 96.8%
## PC35 PC35 0.537736991789387 0.5% 97.3%
## PC36 PC36 0.52006063554491 0.4% 97.7%
## PC37 PC37 0.48599677260018 0.4% 98.1%
## PC38 PC38 0.479324825550777 0.4% 98.5%
## PC39 PC39 0.448037825043289 0.3% 98.8%
## PC40 PC40 0.402783459208605 0.3% 99.0%
## PC41 PC41 0.374710302632229 0.2% 99.3%
## PC42 PC42 0.350144663500462 0.2% 99.5%
## PC43 PC43 0.290208268035153 0.1% 99.6%
## PC44 PC44 0.273524530090223 0.1% 99.7%
## PC45 PC45 0.250637705312012 0.1% 99.8%
## PC46 PC46 0.207493236221493 0.1% 99.9%
## PC47 PC47 0.184398472093357 0.1% 99.9%
## PC48 PC48 0.153958661315767 0.0% 100.0%
## PC49 PC49 0.116576996219424 0.0% 100.0%
## PC50 PC50 1.1368521365537e-15 0.0% 100.0%
A wrapper for conduction 2D and 3D Principal Coordinate Analysis.
result <- dimred_pcoa(MAE,
tax_level="genus",
color="AGE",
shape="DISEASE",
axx=1,
axy=2,
method="bray")
#result$plot
result$table
## Axis Eigenvalue Variance Explained Cumulative Variance
## Axis.1 Axis.1 3.6608828752 21.0% 21.0%
## Axis.2 Axis.2 2.7032255621 15.6% 36.5%
## Axis.3 Axis.3 1.6483657088 9.7% 46.2%
## Axis.4 Axis.4 0.8576655542 5.3% 51.5%
## Axis.5 Axis.5 0.7871770113 4.9% 56.4%
## Axis.6 Axis.6 0.7508249149 4.7% 61.0%
## Axis.7 Axis.7 0.5075916114 3.3% 64.3%
## Axis.8 Axis.8 0.4378276824 2.9% 67.2%
## Axis.9 Axis.9 0.4027891452 2.7% 70.0%
## Axis.10 Axis.10 0.3366576652 2.3% 72.3%
## Axis.11 Axis.11 0.3124021698 2.2% 74.5%
## Axis.12 Axis.12 0.2567275704 1.9% 76.4%
## Axis.13 Axis.13 0.2339137302 1.8% 78.2%
## Axis.14 Axis.14 0.2021360485 1.6% 79.8%
## Axis.15 Axis.15 0.1694909671 1.4% 81.2%
## Axis.16 Axis.16 0.1490156377 1.3% 82.5%
## Axis.17 Axis.17 0.1389118262 1.2% 83.7%
## Axis.18 Axis.18 0.1128957621 1.1% 84.8%
## Axis.19 Axis.19 0.1054818971 1.1% 85.9%
## Axis.20 Axis.20 0.0988700644 1.0% 86.9%
## Axis.21 Axis.21 0.0804137436 0.9% 87.8%
## Axis.22 Axis.22 0.0643054979 0.8% 88.6%
## Axis.23 Axis.23 0.0518703079 0.8% 89.4%
## Axis.24 Axis.24 0.0463030384 0.7% 90.1%
## Axis.25 Axis.25 0.0362393545 0.7% 90.8%
## Axis.26 Axis.26 0.0320134656 0.6% 91.4%
## Axis.27 Axis.27 0.0215820244 0.6% 92.0%
## Axis.28 Axis.28 0.0194574297 0.6% 92.6%
## Axis.29 Axis.29 0.0145135847 0.5% 93.1%
## Axis.30 Axis.30 0.0109599643 0.5% 93.6%
## Axis.31 Axis.31 0.0058786707 0.5% 94.1%
## Axis.32 Axis.32 0.0039309240 0.5% 94.6%
## Axis.33 Axis.33 0.0017409135 0.5% 95.1%
## Axis.34 Axis.34 0.0009556269 0.5% 95.5%
## Axis.35 Axis.35 0.0000000000 0.5% 96.0%
## Axis.36 Axis.36 -0.0009889783 0.4% 96.4%
## Axis.37 Axis.37 -0.0048938884 0.4% 96.9%
## Axis.38 Axis.38 -0.0054299974 0.4% 97.3%
## Axis.39 Axis.39 -0.0096615215 0.4% 97.6%
## Axis.40 Axis.40 -0.0149876621 0.4% 98.0%
## Axis.41 Axis.41 -0.0191369295 0.3% 98.3%
## Axis.42 Axis.42 -0.0259358536 0.3% 98.6%
## Axis.43 Axis.43 -0.0269433021 0.3% 98.9%
## Axis.44 Axis.44 -0.0315780647 0.3% 99.2%
## Axis.45 Axis.45 -0.0359347630 0.3% 99.4%
## Axis.46 Axis.46 -0.0378122785 0.2% 99.6%
## Axis.47 Axis.47 -0.0438677952 0.2% 99.8%
## Axis.48 Axis.48 -0.0463892695 0.2% 100.0%
## Axis.49 Axis.49 -0.0554065217 0.0% 100.0%
## Axis.50 Axis.50 -0.0825914334 0.0% 100.0%
A wrapper for conduction 2D and 3D t-distributed stochastic neighbor embedding.
p <- dimred_tsne(MAE,
tax_level="phylum",
color="AGE",
shape="GROUP",
k="3D",
initial_dims=30,
perplexity=10,
datatype="logcpm")
p
## $plot
##
## $data
## X Y Z
## subject_1 93.460893 -36.105240 148.508659
## subject_2 79.839896 24.418069 164.634084
## subject_3 99.356319 42.826357 379.480432
## subject_4 -97.600202 -189.783423 -191.845206
## subject_5 -92.437016 -105.956728 -199.181684
## subject_6 -156.334444 -91.215262 104.144116
## subject_7 -218.662388 22.083677 20.977972
## subject_8 -75.757465 57.662035 61.538745
## subject_9 -79.616432 2.506652 137.246698
## subject_10 -172.305276 130.304228 20.622562
## subject_11 -212.876501 145.993465 67.668641
## subject_12 -43.161175 -91.919063 -198.021683
## subject_13 -420.636164 269.635196 109.657138
## subject_14 -111.079619 -30.254261 -74.191604
## subject_15 172.213557 190.430264 -289.122242
## subject_16 307.724481 -67.932123 -113.663326
## subject_17 -4.545663 -319.553695 -4.007610
## subject_18 169.072821 297.092485 5.413230
## subject_19 213.979945 212.473244 -291.378514
## subject_20 156.118266 254.842092 -8.707735
## subject_21 76.800410 -183.317665 17.332271
## subject_22 -402.550055 303.236047 80.886805
## subject_23 -18.848420 150.882634 126.333619
## subject_24 210.393912 -216.055596 -74.908523
## subject_25 -33.452070 208.481118 126.212301
## subject_26 37.298489 -217.410404 -30.287460
## subject_27 87.424384 31.392003 332.151544
## subject_28 13.399714 -264.660718 -22.710427
## subject_29 105.225874 114.123267 188.585935
## subject_30 222.532187 -7.205219 -400.099840
## subject_31 43.454748 -334.298866 169.924575
## subject_32 -156.052472 170.944447 -38.621532
## subject_33 3.476256 -360.367861 64.368685
## subject_34 -496.307882 318.736246 118.387285
## subject_35 -462.958445 246.868574 72.898518
## subject_36 231.893939 -260.885491 -73.101109
## subject_37 278.515901 -165.813169 -89.472847
## subject_38 -61.520521 13.441413 31.867345
## subject_39 55.468445 -6.855486 235.754241
## subject_40 -2.632249 49.054492 -174.718793
## subject_41 -110.581622 -39.114136 111.943784
## subject_42 111.470676 -113.289610 76.768541
## subject_43 61.483198 -273.699821 197.937939
## subject_44 254.100462 -66.039970 -106.815351
## subject_45 224.575314 -49.406241 -373.307354
## subject_46 74.870685 52.971504 -43.484427
## subject_47 -65.386158 -53.995891 -81.198354
## subject_48 126.102585 29.111353 -60.790196
## subject_49 -83.083113 165.613292 -134.302017
## subject_50 68.131994 40.011785 -97.307829
Here in animalcules, we provide a DESeq2-based differential abundance analysis. Users can choose the target variable, covariate variable, taxonomy level, minimum count cut-off, and an adjusted p-value threshold. The analysis report will output not only the adjusted p-value and log2-fold-change of the microbes, but also the percentage, prevalence, and the group size-adjusted fold change.
p <- differential_abundance(MAE,
tax_level="phylum",
input_da_condition=c("DISEASE"),
min_num_filter = 2,
input_da_padj_cutoff = 0.5)
p
## microbe padj pValue log2FoldChange positive negative prevalence
## 1 Actinobacteria 0.206 0.0716 0.704 28/28 22/22 100.00%
## 2 Ascomycota 0.206 0.1030 -0.372 28/28 22/22 100.00%
## 3 Basidiomycota 0.206 0.0874 -1.460 19/28 15/22 68.00%
## 4 Firmicutes 0.206 0.0850 0.817 28/28 22/22 100.00%
## 5 others 0.206 0.0783 -0.479 28/28 22/22 100.00%
## 6 Proteobacteria 0.260 0.1560 -0.649 28/28 22/22 100.00%
## Group Size adjusted fold change
## 1 1
## 2 1
## 3 1
## 4 1
## 5 1
## 6 1
One unique feature of animalcules is the biomarker identification module built on machine learning models. Users can choose one classification model from logistic regression, gradient boosting machine, or random forest to identify a microbes biomarker list. The feature importance score for each microbe will be provided. To evaluate the biomarker performance, the ROC plot and the AUC value using cross-validation outputs are shown to users.
p <- find_biomarker(MAE,
tax_level="genus",
input_select_target_biomarker=c("SEX"),
nfolds = 3,
nrepeats = 3,
seed = 99,
percent_top_biomarker = 0.2,
model_name = "logistic regression")
# biomarker
p$biomarker
## [1] "Gloeophyllum" "Lactobacillus" "Alphapapillomavirus"
## [4] "Dialister" "Escherichia" "Aspergillus"
## [7] "Haemophilus" "Xanthomonas" "Malassezia"
## [10] "Veillonella" "Cupriavidus"
# importance plot
p$importance_plot
# ROC plot
p$roc_plot
animalcules.rds is an .rds file that contains three tables: count_table, gene_expression_table and metadata_table. Users could build their own MAE object using the code below:
# data_raw <-
# base::system.file("extdata/animalcules.rds", package = "animalcules") %>%
# base::readRDS()
#
# se_mgx <-
# magrittr::use_series(data_raw, count_table) %>%
# base::data.matrix() %>%
# S4Vectors::SimpleList() %>%
# magrittr::set_names("MGX")
#
# se_ge <-
# magrittr::use_series(data_raw, gene_expression_table) %>%
# base::data.matrix() %>%
# S4Vectors::SimpleList() %>%
# magrittr::set_names("GeneExpression")
#
# se_colData <-
# magrittr::use_series(data_raw, metadata_table) %>%
# S4Vectors::DataFrame()
#
# se_rowData <-
# magrittr::use_series(data_raw, tax_table) %>%
# base::data.frame() %>%
# dplyr::mutate_all(as.character) %>%
# dplyr::select(superkingdom, phylum, class, order, family, genus) %>%
# S4Vectors::DataFrame()
#
# microbe_se <-
# SummarizedExperiment::SummarizedExperiment(assays = se_mgx,
# colData = se_colData,
# rowData = se_rowData)
#
# host_se <-
# SummarizedExperiment::SummarizedExperiment(assays = se_ge,
# colData = se_colData)
#
# mae_experiments <-
# S4Vectors::SimpleList(MicrobeGenetics = microbe_se, HostGenetics = host_se)
#
# MAE <-
# MultiAssayExperiment::MultiAssayExperiment(experiments = mae_experiments,
# colData = se_colData)
## usethis::use_data(MAE)
# saveRDS(MAE, "extdata/MAE.rds")
sessionInfo()
## R version 3.5.2 (2018-12-20)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Mojave 10.14.2
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] grid parallel stats4 stats graphics grDevices utils
## [8] datasets methods base
##
## other attached packages:
## [1] DMwR_0.4.1 animalcules_0.99.0
## [3] plotROC_2.2.1 forcats_0.4.0
## [5] DESeq2_1.22.2 ape_5.3
## [7] vegan_2.5-4 permute_0.9-5
## [9] caret_6.0-82 lattice_0.20-38
## [11] reshape2_1.4.3 tsne_0.1-3
## [13] plotly_4.8.0 ggplot2_3.1.0
## [15] dplyr_0.8.0.1 usethis_1.4.0
## [17] MultiAssayExperiment_1.8.3 SummarizedExperiment_1.12.0
## [19] DelayedArray_0.8.0 BiocParallel_1.16.6
## [21] matrixStats_0.54.0 Biobase_2.42.0
## [23] GenomicRanges_1.34.0 GenomeInfoDb_1.18.2
## [25] IRanges_2.16.0 S4Vectors_0.20.1
## [27] BiocGenerics_0.28.0 tibble_2.1.1
## [29] magrittr_1.5 BiocStyle_2.10.0
##
## loaded via a namespace (and not attached):
## [1] backports_1.1.3 Hmisc_4.2-0 plyr_1.8.4
## [4] lazyeval_0.2.2 splines_3.5.2 crosstalk_1.0.0
## [7] digest_0.6.18 foreach_1.4.4 htmltools_0.3.6
## [10] gdata_2.18.0 checkmate_1.9.1 memoise_1.1.0
## [13] covr_3.2.1 cluster_2.0.7-1 ROCR_1.0-7
## [16] limma_3.38.3 remotes_2.0.2 recipes_0.1.5
## [19] annotate_1.60.1 gower_0.2.0 xts_0.11-2
## [22] prettyunits_1.0.2 colorspace_1.4-1 blob_1.1.1
## [25] xfun_0.5 callr_3.1.1 crayon_1.3.4
## [28] RCurl_1.95-4.12 jsonlite_1.6 genefilter_1.64.0
## [31] zoo_1.8-4 survival_2.43-3 iterators_1.0.10
## [34] glue_1.3.1 gtable_0.3.0 ipred_0.9-8
## [37] zlibbioc_1.28.0 XVector_0.22.0 pkgbuild_1.0.2
## [40] rentrez_1.2.1 quantmod_0.4-13 abind_1.4-5
## [43] scales_1.0.0 DBI_1.0.0 Rcpp_1.0.1
## [46] viridisLite_0.3.0 xtable_1.8-3 htmlTable_1.13.1
## [49] foreign_0.8-71 bit_1.1-14 Formula_1.2-3
## [52] DT_0.5 lava_1.6.5 prodlim_2018.04.18
## [55] glmnet_2.0-16 rex_1.1.2 htmlwidgets_1.3
## [58] httr_1.4.0 gplots_3.0.1.1 RColorBrewer_1.1-2
## [61] acepack_1.4.1 pkgconfig_2.0.2 XML_3.98-1.19
## [64] nnet_7.3-12 locfit_1.5-9.1 labeling_0.3
## [67] later_0.8.0 tidyselect_0.2.5 rlang_0.3.2
## [70] AnnotationDbi_1.44.0 munsell_0.5.0 tools_3.5.2
## [73] cli_1.1.0 generics_0.0.2 RSQLite_2.1.1
## [76] devtools_2.0.1 evaluate_0.13 stringr_1.4.0
## [79] yaml_2.2.0 ModelMetrics_1.2.2 processx_3.3.0
## [82] knitr_1.22 bit64_0.9-7 fs_1.2.6
## [85] caTools_1.17.1.2 purrr_0.3.2 nlme_3.1-137
## [88] mime_0.6 compiler_3.5.2 rstudioapi_0.10
## [91] curl_3.3 testthat_2.0.1 geneplotter_1.60.0
## [94] stringi_1.4.3 ps_1.3.0 desc_1.2.0
## [97] Matrix_1.2-16 shinyjs_1.0 pillar_1.3.1
## [100] BiocManager_1.30.4 data.table_1.12.0 bitops_1.0-6
## [103] httpuv_1.5.0 R6_2.4.0 latticeExtra_0.6-28
## [106] promises_1.0.1 bookdown_0.9 KernSmooth_2.23-15
## [109] gridExtra_2.3 sessioninfo_1.1.1 codetools_0.2-16
## [112] gtools_3.8.1 MASS_7.3-51.1 assertthat_0.2.1
## [115] pkgload_1.0.2 rprojroot_1.3-2 withr_2.1.2
## [118] GenomeInfoDbData_1.2.0 mgcv_1.8-27 rpart_4.1-13
## [121] timeDate_3043.102 tidyr_0.8.3 class_7.3-15
## [124] rmarkdown_1.11 TTR_0.23-4 shiny_1.2.0
## [127] lubridate_1.7.4 base64enc_0.1-3